草庐IT

mySQL DELIMITER 抛出 1064

全部标签

c++ - 抛出异常时不调用析构函数

考虑以下代码:#includeusingnamespacestd;classTest{staticintcount;intid;public:Test(){count++;id=count;cout上面的代码产生以下输出:Constructingobjectnumber1Constructingobjectnumber2Constructingobjectnumber3Constructingobjectnumber4Destructingobjectnumber3Destructingobjectnumber2Destructingobjectnumber1Caught4我认为析构函

c++ - 如果对象的构造函数是noexcept,placement new(expression)可以抛出吗?

templatestructObj{//PlainOldDataforTusingInternalPod=typenamestd::aligned_storage::value>::type;InternalPodvalue_pod_;templateObj(Args&&...args){//myconstructor//placementnew:constructthevalueinthestaticallyallocatedspacenew(&value_pod_)T(std::forward(args)...);//Normalnew可以在分配失败或构造失败时抛出(如果有其他情况

C++ 使用 RAII 和抛出的析构函数

假设我有RAII类:classRaii{Raii(){};~Raii(){if()throwstd::exception();}};如果我有这个功能:voidfoo(){Raiiraii;if(something){throwstd::exception();}}这很糟糕,因为在清除第一个异常时我们可以再次抛出,这将终止进程。我的问题是-将raii用于清理可能抛出的代码的好的模式是什么?例如,这是好事还是坏事-为什么?classRaii{Raii(){};~Raii(){try{if()throwstd::exception();}catch(...){if(!std::uncaugh

c++ - 为什么 std::locale loc ("en_US") 抛出异常?

我试图用美国或英国语言环境字符串实例化一个std::locale对象。std::localeloc("en_US")和std::localeloc("en_GB")都抛出一个错误的语言环境名称运行时异常.使用""或"C"创建语言环境效果很好;但是,我在设置单个国家/地区时遇到问题。我想这样做的原因是出于单元测试的目的,以确保一组字符串排序方法能够正常工作。我还应该指出,我正在使用VisualStudio2008在Windows中编写代码,如果可能的话,我希望让我的代码跨平台。 最佳答案 std::locale支持的字符串是特定于实现

c++ - 打开包含不存在文件的文件流后没有异常抛出?

我正在尝试使用std::ifstreaminStream;inStream.open(file_name);如果file_name不存在,则不会抛出异常。我怎样才能确保在这种情况下抛出?我正在使用C++11 最佳答案 您可以通过设置流exceptionmask来做到这一点,在调用open()之前std::ifstreaminStream;inStream.exceptions(std::ifstream::failbit);try{inStream.open(file_name);}catch(conststd::exception

c++ - std::getline 在遇到 eof 时抛出

std::getline在获取eof时抛出异常。我就是这样做的。std::ifstreamstream;stream.exceptions(std::ifstream::failbit|std::ifstream::badbit);try{stream.open(_file.c_str(),std::ios_base::in);}catch(std::ifstream::failuree){std::cout在上面的代码中,getline在获取eof时抛出异常如何处理这种情况?编辑std::stringbuffer="";while(std::getline(stream,buffer

c++ - 默认的默认构造函数可以抛出吗?

默认的默认构造函数由C++编译器生成,用户无法控制它们。他们能扔吗?声明一个的时候指定noexcept可以吗?下面的代码可以用gcc编译。structA{A()=default;};structB{B()noexcept=default;};intmain(){Aa;Bb;return0;} 最佳答案 允许将noexcept说明符添加到默认的特殊成员函数(默认构造函数、复制构造函数、赋值运算符等)。default声明的特殊成员函数将有一个noexcept说明符,具体取决于所涉及函数的noexcept说明符(其隐含的noexcept说

c++ - 为什么当我抛出派生类的对象时,基类的 catch block 会捕获异常?

这个问题在这里已经有了答案:WhyBaseClasscatchblockcatchderivedclassobject?(3个答案)Whythrowatderivedclasscatchesbybase?(5个答案)关闭5年前。如果我正在传递派生类的对象,那么应该调用派生类的catchblock。但是输出显示异常被基类捕获。为什么?#includeusingnamespacestd;classBase{};classDerived:publicBase{};intmain(){Derivedd;//someotherstufftry{//Somemonitoredcodethrowd;

SQL Error:1064,SQLState:42000

SQLError1064是一个常见的SQL错误,通常表示SQL语句存在语法错误或不符合数据库的规范。SQLState42000是表示通用语法错误的SQL状态码。要解决SQLError1064,需要检查的SQL语句,确保它们符合数据库管理系统的语法规则。引起错误的原因和解决方法:语法错误:最常见的原因是SQL语句中存在语法错误,如拼写错误、不正确的关键字或不正确的语法结构。检查你的SQL语句并确保语法正确。缺少引号:如果你在SQL语句中使用字符串值,确保字符串被正确地引用。字符串应该用单引号或双引号括起来,具体取决于你的数据库系统。数据表或列名错误:检查你的SQL语句中引用的表名和列名是否正确。

c++ - 为什么我的异常被捕获后还是抛出?

我有以下代码,其中使用函数调用的结果初始化变量。这个函数抛出,所以我设置了一个try-catch来捕获异常。由于某种原因,即使在catch子句运行后,异常仍然显示在屏幕上。#include#includeintf(){throwstd::invalid_argument("threw");return50;}structS{S()try:r(f()){std::cout此代码在显示异常后打印“失败”:terminatecalledafterthrowinganinstanceof'std::invalid_argument'what():threw为什么还是抛出异常?我在main中设置